package org.dxy.infrastructure.persistent.po.query;

import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 替代料视图实体
 * @author dxy
 * @createTime 2025/9/13
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("substitute_material_view")
public class SubstituteMaterialViewPo {
    
    /** 替代料ID */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    
    /** MBOM ID */
    private Long mbomId;
    
    /** MBOM编码 */
    private String mbomCode;
    
    /** MBOM名称 */
    private String mbomName;
    
    /** MBOM项ID */
    private Long mbomItemId;
    
    /** 主料物料ID */
    private Long mainMaterialId;
    
    /** 主料编码 */
    private String mainMaterialCode;
    
    /** 主料名称 */
    private String mainMaterialName;
    
    /** 替代料物料ID */
    private Long substituteMaterialId;
    
    /** 替代料编码 */
    private String substituteMaterialCode;
    
    /** 替代料名称 */
    private String substituteMaterialName;
    
    /** 替代比例 */
    private BigDecimal substituteRatio;
    
    /** 优先级 */
    private Integer priority;
    
    /** 有效期开始 */
    private LocalDateTime validFrom;
    
    /** 有效期结束 */
    private LocalDateTime validTo;
    
    /** 状态：DRAFT-草稿，PENDING_APPROVAL-待审批，ACTIVE-可用，REJECTED-拒绝，EXPIRED-已过期，OBSOLETED-废止 */
    private String status;
    
    /** 拒绝原因 */
    private String rejectReason;

    /** 创建人 */
    @TableField(fill = FieldFill.INSERT)
    private String createdBy;

    /** 创建时间 */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createdTime;

    /** 修改人 */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updatedBy;

    /** 更新时间 */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedTime;

    /** 逻辑删除标识 0-未删除 1-已删除 */
    @TableLogic
    private Integer deleted;
}